/* 
 * File:   Objects.h
 * Author: gilvolpe
 *
 * Created on May 25, 2013, 6:36 PM
 */

#ifndef OBJECTS_H
#define	OBJECTS_H

#include "basicInformation.h"
#include "Material.h"
#include "Texture.h"

class Objects {
public:

    Objects(Point3D point, GLfloat angleUpdate);
    Objects(const Objects& orig);

    virtual ~Objects();

    void updatePosition();

    Point3D getPoint();
    void setPoint(Point3D point);

    GLfloat getUpdateAngle();
    GLfloat getAngle();
    void setAngle(GLfloat angle);

    void drawObject();

    virtual void specificDraw() = 0;
    virtual void specificUpdate() = 0;

    Texture getTex() const {
        return tex;
    }

    Material getMaterial() {
        return this->mat;
    }
    
    void setMaterial(Material mat){
        this->mat = mat;
    }

private:
    Point3D point;
    GLfloat angle, angleUpdate;

    Material mat;
    Texture tex;
};

#endif	/* OBJECTS_H */

